#!/bin/bash

# 配置参数
CONF_DIR="/data/detect/conf"
GLOBAL_CONF="$CONF_DIR/global/conf.yaml"
LOG_DIR="/data/detect/logs"
mkdir -p "$LOG_DIR"

# 默认启动所有摄像头（1-5），如果传入参数则启动前x个
MAX_CAMERAS=5
START_CAMERAS=${1:-$MAX_CAMERAS}  # 如果未传入参数，默认启动全部

# 参数校验
if ! [[ "$START_CAMERAS" =~ ^[1-5]$ ]]; then
    echo "错误：参数必须是1-5的整数"
    exit 1
fi

# 启动参数
INITIAL_DELAY=1  # 初始等待时间(秒)
MAX_DELAY=10     # 最大等待时间(秒)

# 清空旧的PID记录
> "$LOG_DIR/pids.log"

echo "准备启动前 $START_CAMERAS 个摄像头..."

# 启动指定数量的摄像头进程
for ((i=1; i<=$START_CAMERAS; i++)); do
    CAM="camera-$i"
    CAM_CONF="$CONF_DIR/camera/$CAM.yaml"
    LOG_FILE="$LOG_DIR/${CAM}_$(date +%Y%m%d).log"
    
    echo "[$(date)] 启动摄像头: $CAM" | tee -a "$LOG_FILE"
    
    # 检查配置文件是否存在
    if [ ! -f "$CAM_CONF" ]; then
        echo "[$(date)] 错误: 配置文件 $CAM_CONF 不存在" | tee -a "$LOG_FILE"
        continue
    fi
    
    # 启动进程
    /home/monster/miniconda3/envs/rknn/bin/python main.py \
        --global_conf "$GLOBAL_CONF" \
        --camera_conf "$CAM_CONF" \
        --log_file "$LOG_FILE" &
        # >> "$LOG_FILE" 2>&1 &
    
    # 记录进程ID
    echo $! >> "$LOG_DIR/pids.log"
    
    # 动态计算等待时间（逐步增加延迟）
    CURRENT_DELAY=$((INITIAL_DELAY + i - 1))
    CURRENT_DELAY=$((CURRENT_DELAY > MAX_DELAY ? MAX_DELAY : CURRENT_DELAY))
    echo "[$(date)] 等待 ${CURRENT_DELAY}秒..." | tee -a "$LOG_FILE"
    sleep $CURRENT_DELAY
done

# 检查实际启动的进程数
RUNNING_PIDS=$(wc -l < "$LOG_DIR/pids.log")
echo "成功启动 $RUNNING_PIDS 个摄像头进程"